package com.directorio.modelo.dao;

import com.directorio.modelo.bean.Alumno;
import com.directorio.modelo.bean.Empresa;
import com.directorio.modelo.bean.Empresa_Requerimiento;
import com.directorio.modelo.dao.EmpresaDao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

public class EmpresaDaoImpl extends SqlMapClientDaoSupport implements EmpresaDao{
    public EmpresaDaoImpl(){
    }

    public int insertEmpresa(Empresa emp)throws Exception {
        List listInt;
        try{
            listInt = getSqlMapClientTemplate().queryForList("EmpresaNS.insertEmpIbt", emp);
        }catch(Exception ex){
            ex.printStackTrace();
            return 0;
        }
        return ((Integer)listInt.get(0)).intValue();
    }

    public Empresa getEmpresa(String ruc)throws Exception{
        Map map = new HashMap();
        map.put("_ruc", ruc);
        Empresa empresa = (Empresa)getSqlMapClientTemplate().queryForObject("EmpresaNS.getEmpresaIbt", map);
        return empresa;
    }
    public List<Empresa> getEmpresaAll(Map map)throws Exception{
    	try{
    		return getSqlMapClientTemplate().queryForList("EmpresaNS.getEmpresaAllIbt", map);
    	}catch(Exception ex){
    		ex.printStackTrace();
    		return null;
    	}
    }

    public List getGiro()throws Exception{
        List listGiro = getSqlMapClientTemplate().queryForList("EmpresaNS.getGiroEmpIbt");
        return listGiro;
    }

    public List getCargo()throws Exception{
        List listCarg = getSqlMapClientTemplate().queryForList("EmpresaNS.getCargoEncIbt");
        return listCarg;
    }

    public int insertRequerEmpresa(Empresa_Requerimiento req_emp)throws Exception{
        int ret = 0;
        try{
            ret = ((Integer)getSqlMapClientTemplate().queryForObject("EmpresaNS.insertRequerEmpIbt", req_emp)).intValue();
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return ret;
    }
    public List getRequerimientos(String ruc,String estado) throws Exception{
        Map map = new HashMap();
        map.put("_ruc", ruc);
        map.put("_stad", "%"+estado+"%");
        try{
            return getSqlMapClientTemplate().queryForList("EmpresaNS.getRequerimientIbt", map);
        }catch(Exception ex){
            ex.printStackTrace();
            return null;
        }        
    }
    public List getBusquedadRequerimientos(Map map) throws Exception{
        try{
            return getSqlMapClientTemplate().queryForList("EmpresaNS.getBusquedadRequerimientIbt", map);
        }catch(Exception ex){
            ex.printStackTrace();
            return null;
        }        
    }
    public List getBusquedadRequerimientosFromAlum(Map map) throws Exception{
        try{
            return getSqlMapClientTemplate().queryForList("EmpresaNS.getRequerimientFromAlumIbt", map);
        }catch(Exception ex){
            ex.printStackTrace();
            return null;
        }        
    }
    public List getRequerimientWithData(Map map) throws Exception{
        try{
            return getSqlMapClientTemplate().queryForList("EmpresaNS.getRequerimientWithDataIbt", map);
        }catch(Exception ex){
            ex.printStackTrace();
            return null;
        }        
    }    
    @SuppressWarnings("unchecked")
	public int publicRequerEmpresa(String _ruc, String _detal)throws Exception{
    	Map map = new HashMap();
    	map.put("_ruc",_ruc);
    	map.put("_detal",_detal);
        int ret = 0;
        try{
           ret = ((Integer)getSqlMapClientTemplate().queryForObject("EmpresaNS.publicRequerEmpIbt", map)).intValue();
        }catch(Exception ex){
        	ex.printStackTrace();
        }
        return ret;
   }
    
	public List<String> publicAceptacionRequerEmpresa(Map map) throws Exception {
		List<String> listDat = new ArrayList<String>();
		int ret = 0;
        try{
            ret = ((Integer)getSqlMapClientTemplate().queryForObject("EmpresaNS.getAceptRequerimientIbt", map)).intValue();
            listDat.add(String.valueOf(ret));
        }catch(Exception ex){
        	ex.printStackTrace();
        	listDat.add("0");
        }
        return listDat;
	}
	public List<String> getMailsFromRequerimiento(Map map) throws Exception {
		List<String> listDat = null;
        try{
            listDat = getSqlMapClientTemplate().queryForList("EmpresaNS.getMailesRequerimientoIbt", map);
            listDat = ((String)listDat.get(0)).compareTo("0")==0?null:listDat;
        }catch(Exception ex){
            ex.printStackTrace();
            listDat = null;
        }
        return listDat;
	}	

	public int updateDatosEmpresa(String _ruc, String _val, Integer op)throws Exception {
		Map map = new HashMap();
		map.put("_ruc", _ruc);
		map.put("_val", _val);
		map.put("_opt", op);
		int ret = 0;
        try{
            ret = ((Integer)getSqlMapClientTemplate().queryForObject("EmpresaNS.updateDatoEmpresIbt", map)).intValue();
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return ret;
	}

	public int updateDatosResponsabEmpresa(Empresa empresa) throws Exception {
		int ret = 0;
        try{
           ret = ((Integer)getSqlMapClientTemplate().queryForObject("EmpresaNS.updateDatoRespEmpresIbt", empresa)).intValue();
        }catch(Exception ex){
        	ex.printStackTrace();
        }
        return ret;
	}
	public List<Alumno> getPerfilAlumn(Map map){
    	try{
    		return this.getSqlMapClientTemplate().queryForList("EmpresaNS.getPerfilAlumnsIbt", map);
    	}catch(Exception ex){
    		ex.printStackTrace();
    		return null;
    	}
    }
}